gdk_seat_get_pointer
gdk_seat_get_keyboard
gdk_seat_get_slaves
+gdk_seat_get_master_pointers
<SUBSECTION Standard>
GDK_SEAT
seat_class = GDK_SEAT_GET_CLASS (seat);
return seat_class->get_tool (seat, serial);
}
+
+/**
+ * gdk_seat_get_master_pointers:
+ * @seat: The #GdkSeat
+ * @capabilities: Queried capabilities
+ *
+ * Returns all master pointers with the given capabilities driven by this @seat.
+ * On most backends this function will return a list with a single element (meaning
+ * that all input devices drive the same onscreen cursor).
+ *
+ * In other backends where there can possibly be multiple foci (eg. wayland),
+ * this function will return all master #GdkDevices that represent these.
+ *
+ * Returns: (transfer container) (element-type GdkDevice): A list
+ * of master pointing devices
+ *
+ * Since: 3.93.
+ */
+GList *
+gdk_seat_get_master_pointers (GdkSeat *seat,
+ GdkSeatCapabilities capabilities)
+{
+ g_return_val_if_fail (GDK_IS_SEAT (seat), NULL);
+
+ return GDK_SEAT_GET_CLASS (seat)->get_master_pointers (seat, capabilities);
+}
GDK_AVAILABLE_IN_3_20
GdkDevice * gdk_seat_get_keyboard (GdkSeat *seat);
+GDK_AVAILABLE_IN_3_93
+GList * gdk_seat_get_master_pointers (GdkSeat *seat,
+ GdkSeatCapabilities capabilities);
+
G_END_DECLS
#endif /* __GDK_SEAT_H__ */
return NULL;
}
+static GList *
+gdk_seat_default_get_master_pointers (GdkSeat *seat,
+ GdkSeatCapabilities capabilities)
+{
+ GList *masters = NULL;
+
+ if (capabilities & GDK_SEAT_CAPABILITY_ALL_POINTING)
+ masters = g_list_prepend (masters, gdk_seat_get_pointer (seat));
+
+ return masters;
+}
+
static void
gdk_seat_default_class_init (GdkSeatDefaultClass *klass)
{
seat_class->get_master = gdk_seat_default_get_master;
seat_class->get_slaves = gdk_seat_default_get_slaves;
+ seat_class->get_master_pointers = gdk_seat_default_get_master_pointers;
seat_class->get_tool = gdk_seat_default_get_tool;
}
GdkDeviceTool * (* get_tool) (GdkSeat *seat,
guint64 serial);
+ GList * (* get_master_pointers) (GdkSeat *seat,
+ GdkSeatCapabilities capabilities);
};
void gdk_seat_device_added (GdkSeat *seat,
return slaves;
}
+static GList *
+gdk_wayland_seat_get_master_pointers (GdkSeat *seat,
+ GdkSeatCapabilities capabilities)
+{
+ GdkWaylandSeat *wayland_seat = GDK_WAYLAND_SEAT (seat);
+ GList *masters = NULL;
+
+ if (capabilities & GDK_SEAT_CAPABILITY_POINTER)
+ masters = g_list_prepend (masters, wayland_seat->master_pointer);
+ if (capabilities & GDK_SEAT_CAPABILITY_TOUCH)
+ masters = g_list_prepend (masters, wayland_seat->touch_master);
+ if (capabilities & GDK_SEAT_CAPABILITY_TABLET_STYLUS)
+ {
+ GList *l;
+
+ for (l = wayland_seat->tablets; l; l = l->next)
+ {
+ GdkWaylandTabletData *tablet = l->data;
+
+ masters = g_list_prepend (masters, tablet->master);
+ }
+ }
+
+ return masters;
+}
+
static void
gdk_wayland_seat_class_init (GdkWaylandSeatClass *klass)
{
seat_class->ungrab = gdk_wayland_seat_ungrab;
seat_class->get_master = gdk_wayland_seat_get_master;
seat_class->get_slaves = gdk_wayland_seat_get_slaves;
+ seat_class->get_master_pointers = gdk_wayland_seat_get_master_pointers;
}
static void